home *** CD-ROM | disk | FTP | other *** search
/ MacTech 1 to 12 / MacTech-vol-1-12.toast / Source / MacTech® Magazine / Volume 07 - 1991 / 07.03 Mar 91 / TEDrag / TEDrag.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-01-17  |  6.9 KB  |  245 lines  |  [TEXT/MPS ]

  1.  
  2. class TTEApplication : public TApplication {
  3. public:
  4.     virtual pascal void ITEApplication(OSType itsMainFileType);
  5.     virtual pascal struct TDocument *DoMakeDocument(CmdNumber itsCmdNumber);
  6.     virtual pascal struct TCommand *DoMenuCommand(CmdNumber aCmdNumber);
  7.     virtual pascal void PoseModalDialog();
  8. #ifdef qDebug
  9.     virtual pascal void IdentifySoftware();
  10. #endif
  11. };
  12.  
  13. class TTEDocument;
  14.  
  15. class TPaletteView : public TView {
  16.  
  17. // friend class TTEDocument;
  18.  
  19. public:
  20.     int            fIconSelected;
  21.     virtual pascal void IPaletteView(TTEDocument *itsTEDocument);
  22.     virtual pascal struct TCommand *DoMouseCommand(Point *theMouse,
  23.                                 EventInfo *info, Point *hysteresis);
  24.     pascal void DoHighlightSelection(HLState fromHL, HLState toHL);
  25.     pascal void Draw(Rect *area);
  26. #ifdef qDebug
  27.     virtual pascal void Fields(pascal void (*DoToField) (StringPtr fieldName,
  28.                              Ptr fieldAddr, short fieldType, void *link), void *link);
  29. #endif
  30. };
  31.  
  32.  
  33. class TBox : public TObject {
  34. public:
  35.     Rect    fLocation;
  36.     Boolean    fSelected;
  37.     virtual pascal void IBox(Rect *itsLocation);
  38.     virtual pascal void DrawShape();
  39.     virtual pascal void NeedDiskSpace(long *data);
  40.     virtual pascal void Read(short aRefNum);
  41.     virtual pascal void Write(short aRefNum);
  42. #ifdef qDebug
  43.     virtual pascal void Fields(pascal void (*DoToField) (StringPtr fieldName,
  44.                              Ptr fieldAddr, short fieldType, void *link), void *link);
  45. #endif
  46. };
  47.  
  48. class TShape : public TBox {
  49. public:
  50.     short    fPenSize;
  51.     Pattern    fPenPat;
  52.     Pattern    fFillPat;
  53.     virtual pascal void NeedDiskSpace(long *data);
  54.     virtual pascal void IBox(Rect *itsLocation);
  55.  
  56. #ifdef qDebug
  57.     virtual pascal void Fields(pascal void (*DoToField) (StringPtr fieldName,
  58.                              Ptr fieldAddr, short fieldType, void *link), void *link);
  59. #endif
  60. };
  61.  
  62. class TRect : public TShape {
  63. public:
  64.     pascal void DrawShape();
  65.     pascal void NeedDiskSpace(long *data);
  66. #ifdef qDebug
  67.     virtual pascal void Fields(pascal void (*DoToField) (StringPtr fieldName,
  68.                              Ptr fieldAddr, short fieldType, void *link), void *link);
  69. #endif
  70. };
  71.  
  72. class TOval : public TShape {
  73. public:
  74.     pascal void DrawShape();
  75.     pascal void NeedDiskSpace(long *data);
  76. #ifdef qDebug
  77.     virtual pascal void Fields(pascal void (*DoToField) (StringPtr fieldName,
  78.                              Ptr fieldAddr, short fieldType, void *link), void *link);
  79. #endif
  80. };
  81.  
  82. class TRoundRect : public TShape {
  83. public:
  84.     short    fOvalWidth;
  85.     short    fOvalHeight;
  86.     
  87.     pascal void IBox(Rect *itsLocation);
  88.     pascal void DrawShape();
  89.     pascal void NeedDiskSpace(long *data);
  90. #ifdef qDebug
  91.     virtual pascal void Fields(pascal void (*DoToField) (StringPtr fieldName,
  92.                              Ptr fieldAddr, short fieldType, void *link), void *link);
  93. #endif
  94. };
  95.  
  96.  
  97. class TTextView : public TTEView {
  98.  
  99. public:
  100.     TTEDocument    *fTEDocument;
  101.     TPaletteView    *fPaletteView;
  102.     Boolean            fUpdated;
  103.     pascal void ITextView(TTEDocument *itsTEDocument);
  104.     pascal Boolean DoIdle(IdlePhase phase);
  105.     pascal struct TCommand *DoKeyCommand(short ch, 
  106.                                         short aKeyCode, EventInfo *info);
  107.     pascal struct TCommand *DoMenuCommand(CmdNumber aCmdNumber);
  108.     pascal void DoSetupMenus ();
  109.     pascal struct TCommand *DoMouseCommand(Point *theMouse, 
  110.                                     EventInfo *info, Point *hysteresis);
  111.     pascal Boolean DoSetCursor(Point localPoint, RgnHandle cursorRgn);
  112.     pascal void Draw(Rect *area);
  113. #ifdef qDebug
  114.     virtual pascal void Fields(pascal void (*DoToField) (StringPtr fieldName,
  115.                             Ptr fieldAddr, short fieldType, void *link), void *link);
  116. #endif
  117. };
  118.  
  119. class TColorCmd : public TCommand {
  120.  
  121. // friend class TTEDocument;
  122.  
  123. public:
  124.     TTEDocument    *fTEDocument;
  125.     TTextView        *fTextView;
  126.     int                fOldColorCmd, fNewColorCmd;    // menu command numbers
  127.     pascal void IColorCmd(int aCmdNumber, TTEDocument *itsDocument,
  128.                                         TTextView *itsView);
  129.     pascal void DoIt();
  130.     pascal void RedoIt();
  131.     pascal void UndoIt();
  132. #ifdef qDebug
  133.     virtual pascal void Fields(pascal void (*DoToField) (StringPtr fieldName,
  134.                          Ptr fieldAddr, short fieldType, void *link), void *link);
  135. #endif
  136. };
  137.  
  138.  
  139. class TSketcher : public TCommand {
  140.  
  141. public:
  142.     TTEDocument     *fTEDocument;
  143.     TTextView        *fTextView;
  144.     TBox            *fBox;            // the object being sketched
  145.     Rect            fBoxLocation;    // size of the Box being sketched
  146.     pascal void ISketcher(TTEDocument *itsDocument, TTextView *itsView);
  147.     pascal struct TCommand *TrackMouse(TrackPhase aTrackPhase,
  148.                             VPoint *anchorPoint, VPoint *previousPoint, 
  149.                             VPoint *nextPoint, Boolean mouseDidMove);
  150.     pascal void DoIt();
  151.     pascal void RedoIt();
  152.     pascal void UndoIt();
  153. #ifdef qDebug
  154.     virtual pascal void Fields(pascal void (*DoToField) (StringPtr fieldName,
  155.                             Ptr fieldAddr, short fieldType, void *link), void *link);
  156. #endif
  157. };
  158.  
  159.  
  160. class TDragger : public TCommand {
  161.  
  162. public:
  163.     TTEDocument     *fTEDocument;
  164.     TTextView        *fTextView;
  165.     TBox            *fBox;            // the object being dragged
  166.     Rect            oldLocation;    // initial location of object 
  167.     Rect            newLocation;    // new location of object 
  168.     Point            fDelta;            // offset moved    
  169.     PicHandle        fFeedbackPicture;    // support for Track feedback
  170.     Rect            fPictureBounds;        // idem
  171.     pascal void IDragger(TBox *itsBox, TTEDocument *itsDocument, TTextView *itsView);
  172.     pascal struct TCommand *TrackMouse(TrackPhase aTrackPhase,
  173.                             VPoint *anchorPoint, VPoint *previousPoint, 
  174.                             VPoint *nextPoint, Boolean mouseDidMove);
  175.     pascal void TrackFeedback(VPoint *anchorPoint, VPoint *nextPoint,
  176.                                 Boolean turnItOn, Boolean mouseDidMove);
  177.     pascal void DoIt();
  178.     pascal void RedoIt();
  179.     pascal void UndoIt();
  180. #ifdef qDebug
  181.     virtual pascal void Fields(pascal void (*DoToField) (StringPtr fieldName,
  182.                             Ptr fieldAddr, short fieldType, void *link), void *link);
  183. #endif
  184. };
  185.  
  186.  
  187. class TTEDocument : public TDocument {
  188. public:
  189.     TPaletteView    *fPaletteView;
  190.     TTextView        *fTextView;
  191.     Handle            fTextHdl;            // text typed by user
  192.     int                fTextColorCmd;        // menu command number
  193.     TList            *fShapeList;        // list of Shapes to be drawn
  194.     pascal void ITEDocument();
  195.     pascal void AddShape(TBox *aBox); 
  196.     pascal void DeleteShape();
  197.     pascal void DoMakeWindows();
  198.     pascal void DoMakeViews(Boolean forPrinting);
  199.     pascal void DoNeedDiskSpace(long *dataForkBytes, long *rsrcForkBytes);
  200.     pascal void DoRead(short aRefNum, Boolean rsrcExists, Boolean forPrinting);
  201.     pascal void DoWrite(short aRefNum, Boolean makingCopy);
  202.     pascal void ForEachShapeDo(pascal void (*DoToItem)
  203.                 (TObject *item, void *DoToItem_Staticlink),void *DoToItem_Staticlink);
  204.     pascal void Free();
  205.     pascal void SetTextColorCmd(int theColorCmd);
  206.     pascal int  TextColorCmd();
  207. #ifdef qDebug
  208.     virtual pascal void Fields(pascal void (*DoToField) (StringPtr fieldName,
  209.                             Ptr fieldAddr, short fieldType, void *link), void *link);
  210. #endif
  211. };
  212.  
  213.  
  214. // --- global definitions ---
  215.  
  216. typedef pascal void (*DoToObject) (TObject *aObject, void *DoToObject_staticlink);
  217.  
  218. struct CalcDiskSpaceStruct {
  219.     long myDataForkBytes;
  220. };
  221.  
  222. struct DoToRectStruct {
  223.     int myRefNum;
  224. };
  225.  
  226. // support for dragging, JL 9/90
  227. struct FindBoxStruct {
  228.     Point theMouse;
  229.     TBox *myBox;
  230. };
  231.  
  232. // support for selections, JL 1/91
  233. struct SelectStruct {
  234.     TTextView *myTextView;
  235. };
  236.  
  237. // support for moves, JL 1/91
  238. struct MoveStruct {
  239.     Point delta;
  240. };
  241.  
  242. //
  243. // --- end of declarations ---
  244. //
  245.